"""
xadmin不再使用Django的admin.py,而是需要编写代码在adminx.py文件中
xadmin的站点管理类不用继承admin.ModelAdmin,而是直接继承object即可
使用xadmin需要将admin.py中所有代码注释掉
"""

import xadmin
from xadmin import views
from . import models

xadmin.site.register(models.GoodsCategory)
xadmin.site.register(models.GoodsChannel)
xadmin.site.register(models.Goods)
xadmin.site.register(models.Brand)
xadmin.site.register(models.GoodsSpecification)
xadmin.site.register(models.SpecificationOption)
# xadmin.site.register(models.SKU)
xadmin.site.register(models.SKUSpecification)
xadmin.site.register(models.SKUImage)


class BaseSetting(object):
    """xadmin的基本配置"""
    enable_themes = True  # 开启主题切换功能
    use_bootswatch = True

xadmin.site.register(views.BaseAdminView, BaseSetting)


class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = "美多商城运营管理系统"  # 设置站点标题
    site_footer = "美多商城集团有限公司"  # 设置站点的页脚
    menu_style = "accordion"  # 设置菜单折叠

xadmin.site.register(views.CommAdminView, GlobalSettings)


class SKUAdmin(object):
    model_icon = 'fa fa-gift'  # 控制菜单的图标
    list_display = ['id', 'name', 'price', 'stock', 'sales', 'comments']  # 控制列表展示的字段
    search_fields = ['id', 'name']  # 控制可以通过搜索框搜索的字段名称，xadmin使用的是模糊查询
    list_filter = ['is_launched']  # 可以进行过滤操作的列
    list_editable = ['price', 'stock']  # 在列表页可以快速直接编辑的字段
    show_detail_fields = ['name']  # 在列表页提供快速显示详情信息
    show_bookmarks = True  #  控制是否显示书签功能
    list_export = ['xls', 'csv', 'xml']  # 控制列表页导出数据的可选格式
    refresh_times = [3, 5]  # 可选以支持按多长时间(秒)刷新页面
    data_charts = {
        "sku_stock": {
            'title': '库存量',
            "x-field": "id",
            "y-field": ('stock',),
            "order": ('id',)
        },
        "sku_sales": {
            'title': '销量',
            "x-field": "id",
            "y-field": ('sales',),
            "order": ('id',)
        },
    }
    """
    data_charts 控制显示图标的样式:
        title 控制图标名称
        x-field 控制x轴字段
        y-field 控制y轴字段，可以是多个值
        order 控制默认排序
    """
    readonly_fields = ['sales', 'comments']  # 在编辑页面的只读字段

    def save_models(self):
        # 当对象被添加、修改时执行
        obj = self.new_obj
        obj.save()
        # 补充自定义行为
        from celery_tasks.html.tasks import generate_static_sku_detail_html
        generate_static_sku_detail_html.delay(obj.sku.id)

    def delete_model(self):
        # 当对象被删除时执行
        obj = self.obj
        sku_id = obj.sku.id
        obj.delete()

        # 补充自定义行为
        from celery_tasks.html.tasks import generate_static_sku_detail_html
        generate_static_sku_detail_html.delay(sku_id)

xadmin.site.register(models.SKU, SKUAdmin)
